package simuladorso;

/**
 * Classe que representa um bloco de memoria da lista encadeada
 * @author jhonata
 */
public class MemoryBlock 
{
    /**
     * inteiros que guardam o 
     * processo armazenado, o inicio
     * e o fim do bloco
    
     */
    private Process processo;
    private int inicio;
    private int fim;
    
    
    
    /**
     * Construtor que inicia o bloco
     * quando bloco estiver vazio o processo tera -1
     * o inicio e fim terao -1 quando o bloco for nulo
     * @param p - indica o processo que esta alocado
     * @param i - indica o inicio do segmento
     * @param f - indica o final do segmento
     * @param seg - identificador do segmento
     */
    public MemoryBlock(Process p, int i, int f)
    {
        this.processo = p;
        this.inicio = i;
        this.fim = f;
    }
    
    /**
     * Construtor que inicia um bloco nulo
     */
    public MemoryBlock()
    {
        this(null, -1, -1);
    }
    
    /**
     * seta o valor do processo que esta usando o bloco
     * @param processo 
     */
    public void setProcesso(Process processo)
    {
        this.processo = processo;
    }
    
    /**
     * seta o valor do inicio do bloco
     * @param i 
     */
    public void setInicio(int i)
    {
        this.inicio = i;
    }
    
    /**
     * seta o valor do inicio do bloco
     * @param i 
     */
    public void setFim(int f)
    {
        this.fim = f;
    }
    
    
    /**
     * seta o valor do proximo bloco
     * @param p 
     */
//    public void setProx(MemoryBlock p)
//    {
//        this.prox = p;
//    }
    
    /**
     * retorna o processo dentro do bloco
     * @return 
     */
    public Process getProcesso()
    {
        return this.processo;
    }
    
    /**
     * retorna o inicio do bloco
     * @return 
     */
    public int getInicio()
    {
        return this.inicio;
    }
    
    /**
     * retorna o fim do bloco
     * @return 
     */
    public int getFim()
    {
        return this.fim;
    }
    
    public int sizeBlock() {
        return this.fim - this.inicio;
    }
}
